//
// File:	IEntityFactory.hpp
// Author:	Thomas TISSOT-DUPONT
// E-mail:	<thomas.tissotdupont@free.fr>
// Create:	27/04/2010 19:35:36
// Purpose:	
//
#ifndef IENTITYFACTORY_HPP
#define IENTITYFACTORY_HPP

#include <map>
#include <string>
#include "IEntity.hpp"
#include "Variant.hpp"

class IEntityFactory
{
public:
	typedef IEntity								*(*tPfnEntityCreate)(const std::string &);
	typedef std::map<std::string, Variant>		tEntityDatamapKeyValues;

public:
	virtual										~IEntityFactory() {}

public:
	virtual bool								RegisterEntityClass(const std::string &, tPfnEntityCreate) = 0;
	virtual IEntity								*CreateEntityByName(const std::string &, const tEntityDatamapKeyValues * = NULL) = 0;
};

#endif //!IENTITYFACTORY_HPP
